package com.ssm.auth.api;

import com.ssm.auth.entity.AuthUserDTO;
import com.ssm.auth.entity.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/**
 * 当subject微服务调用auth微服务时，如果直接在subject中引入auth的feign会导致dto等对象也要引入到subject中。
 * 为了解决这一问题，在api对外接口层，将自身的feign接口提供给外部，当subject想要进行rpc时，只需在infra基础设施层中引入auth-api即可。
 * 而auth微服务的api层和controller都需要dto对象，此时只需把dto对象留在api层，contoller的pom文件引入api层即可进行解耦。
 * common层中的result和resultCodeEnum同理，他们只在controller中被引用，抽取到api层无影响。
 */
@FeignClient(name = "jc-club-auth") //微服务名称
public interface UserFeignService {
    /**
     * 获取用户信息
     */
    @RequestMapping("/user/getUserInfo")
    Result<AuthUserDTO> getUserInfo(@RequestBody AuthUserDTO authUserDTO);

    @RequestMapping("/user/listByIds")
    Result<List<AuthUserDTO>> listUserInfoByIds(@RequestBody List<String> userNameList);

}
